package de.reichelt.fx;

import java.util.List;
import javafx.scene.Node;
import javafx.scene.control.Tab;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Region;

public class FXHelper {
  
  /**
   * setzt ein Control in ein AnchorPane und legt die Randabstände über eine FxPosBox 
   * fest; ist ein Element der PosBox nicht gesetzt, so wird dieser Abstand nicht gesetzt.
   * @param ap
   * @param node
   * @param border 
   */
  public static void add2AnchorPane(AnchorPane ap, Node node, FxPosBox border) {
    ap.getChildren().add(node);
    if (border.getTop()!=null) {
      AnchorPane.setTopAnchor(node, border.getTop());
    }
    if (border.getBottom()!=null) {
      AnchorPane.setBottomAnchor(node, border.getBottom());
    }
    if (border.getLeft()!=null) {
      AnchorPane.setLeftAnchor(node, border.getLeft());
    }
    if (border.getRight()!=null) {
      AnchorPane.setRightAnchor(node, border.getRight());
    }
  }
  
  /**
   * setzt ein Control in ein AnchorPane und legt die Randabstände fest; ist ein 
   * Element der PosBox nicht gesetzt, so wird dieser Abstand nicht gesetzt.
   * @param ap
   * @param node
   * @param top
   * @param right
   * @param bottom
   * @param left 
   */
  public static void add2AnchorPane(AnchorPane ap, Node node, Double left, 
          Double top, Double right, Double bottom) {
    ap.getChildren().add(node);
    if (top!=null) {
      AnchorPane.setTopAnchor(node, top);
    }
    if (bottom!=null) {
      AnchorPane.setBottomAnchor(node, bottom);
    }
    if (left!=null) {
      AnchorPane.setLeftAnchor(node, left);
    }
    if (right!=null) {
      AnchorPane.setRightAnchor(node, right);
    }
  }
  
  
          
  /**
   * deaktiviert oder aktiviert die angegeben Tabs.
   * 
   * @param tabs
   * @param disabled 
   */
  public static void disableTabs(List<Tab> tabs, boolean disabled) {
    for (Tab tab: tabs) {
      tab.setDisable(disabled);
    }
  }

  public static void fixWidth(Region control, double d) {
    control.setPrefWidth(d);
    control.setMinWidth(d);
    control.setMaxWidth(d);
  }
  
  public static void fixHeight(Region control, double d) {
    control.setPrefHeight(d);
    control.setMinHeight(d);
    control.setMaxHeight(d);
  }
  
  public static void fixSize(Region control, double width, double height) {
    fixWidth(control, width);
    fixHeight(control, height);
  }
  
  
  
}
